#pragma once
#include "common.h"
#include "TimeSys.h"
#include "ReadN.h"

class GNSSSatPos {
public:
    GNSSSatPos(TimeSys* timeSys, ReadN* readN) : timeSys(timeSys), readN(readN) {}
    virtual ~GNSSSatPos() = default;
    virtual XYZ calculateSatPos(const std::string& prn, const BaseT& time) = 0;
protected:
    TimeSys* timeSys;
    ReadN* readN;
};

class BDSSatPos : public GNSSSatPos {
public:
    BDSSatPos(TimeSys* timeSys, ReadN* readN) : GNSSSatPos(timeSys, readN) {}
    XYZ calculateSatPos(const std::string& prn, const BaseT& time) override;
};